package com.wg.core.thread;

import java.util.concurrent.ScheduledFuture;

/**
 * 线程池接口
 *
 * @author 少爷123
 */
public interface IThreadPool {

    /**
     * 初始化
     */
    void init();

    /**
     * 关闭
     */
    void shutdown();

    /**
     * 添加逻辑任务
     *
     * @param task 任务
     */
    void execute(Runnable task);

    /**
     * 添加计时任务
     *
     * @param task              任务
     * @param firstIntervalInMs 首次启动时间
     * @param intervalInMs      间隔时间
     * @return future 用来关闭计时器
     */
    ScheduledFuture<?> scheduleAtFixedRate(Runnable task, long firstIntervalInMs, long intervalInMs);

    /**
     * 添加计时任务
     *
     * @param task              任务
     * @param firstIntervalInMs 首次启动时间
     * @return future 用来关闭计时器
     */
    ScheduledFuture<?> schedule(Runnable task, long firstIntervalInMs);
}
